代码拉取完成,页面将自动刷新
/*
typedef struct _MENU_OptionTypeDef // 选项结构体
{
char *String; // 选项字符串
void (*func)(void); // 选项功能 函数指针
} MENU_OptionTypeDef;
static MENU_OptionTypeDef MENU_OptionList[] = {{"<<<", NULL}, // 固定格式, 用于退出
{"Tools", MENU_RunToolsMenu}, // 工具
{"Games", MENU_RunGamesMenu}, // 游戏
{"Setting", MENU_RunSettingMenu}, // 设置
{"Information", MENU_Information}, // 信息
{"..", NULL}}; // 固定格式, 用于计算选项列表长度和退出
MENU_RunMenu(MENU_OptionList);
void MENU_RunMainMenu(void)
{
static MENU_OptionTypeDef MENU_OptionList[] = {{"<<<"},
{"Tools", MENU_RunToolsMenu}, // 工具
{"Games", MENU_RunGamesMenu}, // 游戏
{"Setting", NULL}, // 设置
{"Information", MENU_Information}, // 信息
{".."}};
MENU_RunMenu(MENU_OptionList);
}
void MENU_RunToolsMenu(void)
{
static MENU_OptionTypeDef MENU_OptionList[] = {{"<<<"},
{"Seria", NULL}, // 串口
{"Oscilloscope ", NULL}, // 示波器
{"PWM Output", NULL}, // PWM 输出
{"PWM Input", NULL}, // PWM 输入
{"ADC Input", NULL}, // ADC 输入
{".."}};
MENU_RunMenu(MENU_OptionList);
}
*例如以上 void MENU_RunToolsMenu(void)
被选项 {"Tools", MENU_RunToolsMenu}
调用;
*注: 显示器驱动需要使用缓冲区机制, 如 u8g2
#define MENU_WIDTH 128 // 菜单宽度
#define MENU_HEIGHT 64 // 菜单高度
case BUFFER_DISPLAY:
OLED_Update();
break;
有些指令是有参数的, 参数已经提取好, 按需使用参数即可, 例如:
case SHOW_STRING:
{
/* 提取参数列表 */
int *arg_list = ((int *)&command) + 1;
int show_x = arg_list[0];
int show_y = arg_list[1];
char *show_string = (char *)arg_list[2];
/* 按需使用参数 */
OLED_Printf(show_x, show_y, MENU_FONT_W, show_string);
break;
}
代码下载 百度网盘:https://pan.baidu.com/s/1bZPWCKaiNbb-l1gpAv6QNg?pwd=KYWS GitHub:https://github.com/AdamLoong/Embedded_MENU_Simple
B站UP:加油哦大灰狼
*/
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。